package top.lishuoboy.jdbc.a2conn;

import cn.hutool.core.io.resource.ResourceUtil;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

/**
 * 2、创建数据库连接，演变优化
 *
 * @author lishuoboy
 * @date 2021-12-19 11:22
 */
public class A2CreateConnection {

    public static void main(String[] args) throws Exception {
        // 0.参数
        Properties props = new Properties();
        props.load(ResourceUtil.getStream("db.properties"));

        String driveClass5 = props.getProperty("driveClass5");  // mysql5
        String driveClass = props.getProperty("driveClass");  // mysql8
        String url = props.getProperty("url");
        String user = props.getProperty("user");
        String pwd = props.getProperty("pwd");


        // 1.加载驱动
        // 1.1 不是面相接口，写死了具体实现类，不灵活
//        Driver driver = new com.mysql.cj.jdbc.Driver();
        // 1.2 面相接口，反射、灵活
//        Driver driver = (Driver) Class.forName(driveClass).newInstance();
        Class.forName(driveClass);  // 对于部分数据库驱动，这行可以省略，因为下面的DriverManager.getConnection()会自动加载所有 Driver接口的实现类，遍历尝试创建连接，直到成功。jar包中/META-INF/service/接口名字


        // 2.获取连接
        // 2.1 方式一，driver.connect,提供Properties的对象，指明用户名和密码
//        Properties prop = new Properties();
//        prop.setProperty("user", user);
//        prop.setProperty("password", pwd);
//        Connection conn = driver.connect(url, prop);
        // 2.2.方式二
//        DriverManager.registerDriver(driver); // 注册驱动,此处可以省略，因为 com.mysql.cj.jdbc.Driver已经再静态块中调用了
        Connection conn = DriverManager.getConnection(url, user, pwd);


        System.out.println(conn);
    }

}
